home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / CBGRX103.ZIP / contrib / libgrx / test / fonttest.c < prev    next >
Text File  |  1993-12-06  |  4KB  |  135 lines

  1. /**
  2.  ** FONTTEST.C
  3.  **
  4.  **  Copyright (C) 1992, Csaba Biegl
  5.  **    820 Stirrup Dr, Nashville, TN, 37221
  6.  **    csaba@vuse.vanderbilt.edu
  7.  **
  8.  **  This file is distributed under the terms listed in the document
  9.  **  "copying.cb", available from the author at the address above.
  10.  **  A copy of "copying.cb" should accompany this file; if not, a copy
  11.  **  should be available from where this file was obtained.  This file
  12.  **  may not be distributed without a verbatim copy of "copying.cb".
  13.  **  You should also have received a copy of the GNU General Public
  14.  **  License along with this program (it is in the file "copying");
  15.  **  if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  16.  **  Cambridge, MA 02139, USA.
  17.  **
  18.  **  This program is distributed in the hope that it will be useful,
  19.  **  but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.  **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21.  **  GNU General Public License for more details.
  22.  **/
  23.  
  24.  
  25. #include "test.h"
  26. #include <string.h>
  27.  
  28. int cx;
  29. int cy;
  30. int c1;
  31. int c2;
  32. int c3;
  33. int c4;
  34.  
  35. char test_text[] = {
  36.     "QUICK BROWN FOX JUMPS OVER THE LAZY DOG, "
  37.     "quick brown fox jumps over the lazy dog !@#$%^&*()1234567890"
  38. };
  39.  
  40. void displayfont(GrFont *font,char *text,int len)
  41. {
  42.     GrTextOption opt;
  43.     int ww,hh;
  44.     int bx,by;
  45.     int bw,bh;
  46.     int pw,ph;
  47.     int ii;
  48.  
  49.     pw = ph = 0;
  50.     memset(&opt,0,sizeof(opt));
  51.     opt.txo_font = font;
  52.     opt.txo_xalign = GR_ALIGN_LEFT;
  53.     opt.txo_yalign = GR_ALIGN_TOP;
  54.     GrFilledBox(0,0,GrSizeX(),GrSizeY(),GrBlack());
  55.     for(ii = 1; ; ii++) {
  56.         opt.txo_xmag = ii;
  57.         opt.txo_ymag = ii;
  58.         opt.txo_direct  = GR_TEXT_RIGHT;
  59.         opt.txo_fgcolor.v = GrBlack();
  60.         opt.txo_bgcolor.v = c1;
  61.         ww = GrStringWidth(text,len,&opt);
  62.         hh = GrStringHeight(text,len,&opt);
  63.         bw = ww+2*hh;
  64.         bh = ww;
  65.         if(bw < pw+2*hh+2) bw = pw+2*hh+2;
  66.         if(bh < ph+2*hh+2) bh = ph+2*hh+2;
  67.         pw = bw;
  68.         ph = bh;
  69.         if(bw > (2*GrSizeX())) break;
  70.         bx = cx - bw/2;
  71.         by = cy - bh/2;
  72.         GrDrawString(text,len,bx+hh,by,&opt);
  73.         opt.txo_direct  = GR_TEXT_DOWN;
  74.         opt.txo_bgcolor.v = c2;
  75.         GrDrawString(text,len,bx+bw-hh,by,&opt);
  76.         opt.txo_direct  = GR_TEXT_LEFT;
  77.         opt.txo_bgcolor.v = c3;
  78.         GrDrawString(text,len,bx+bw-ww-hh,by+bh-hh,&opt);
  79.         opt.txo_direct  = GR_TEXT_UP;
  80.         opt.txo_bgcolor.v = c4;
  81.         GrDrawString(text,len,bx,by+bh-ww,&opt);
  82.     }
  83.     getkey();
  84.     GrClearClipBox(GrBlack());
  85.     opt.txo_xmag = 1;
  86.     opt.txo_ymag = 1;
  87.     opt.txo_direct  = GR_TEXT_RIGHT;
  88.     opt.txo_fgcolor.v = c1;
  89.     opt.txo_bgcolor.v = GrBlack();
  90.     hh = GrFontHeight(&opt);
  91.     bx = GrSizeX() / 16;
  92.     by = GrSizeY() / 16;
  93.     bx = (bx + 7) & ~7;
  94.     while(by < GrSizeY()) {
  95.         GrDrawString(test_text,strlen(test_text),bx,by,&opt);
  96.         opt.txo_fgcolor.v ^= GR_UNDERLINE_TEXT;
  97.         by += hh;
  98.     }
  99.     getkey();
  100. }
  101.  
  102. TESTFUNC(fonttest)
  103. {
  104.     GrFont *font;
  105.     char buff[100];
  106.  
  107.     if(getenv("GRXFONT") == NULL) GrSetFontPath("..\\fonts");
  108.     cx = GrSizeX() / 2;
  109.     cy = GrSizeY() / 2;
  110.     c1 = GrAllocColor(100,200,100);
  111.     c2 = GrAllocColor(150,150,100);
  112.     c3 = GrAllocColor(100,100,200);
  113.     c4 = GrAllocColor(100,180,180);
  114.     GrBox(GrSizeX()/16 - 2,
  115.         GrSizeY()/16 - 2,
  116.         GrSizeX() - GrSizeX()/16 + 1,
  117.         GrSizeY() - GrSizeY()/16 + 1,
  118.         GrAllocColor(250,100,100)
  119.     );
  120.     GrSetClipBox(GrSizeX()/16,
  121.         GrSizeY()/16,
  122.         GrSizeX() - GrSizeX()/16 - 1,
  123.         GrSizeY() - GrSizeY()/16 - 1
  124.     );
  125.     strcpy(buff,"Default font");
  126.     displayfont(NULL,buff,strlen(buff));
  127.     for( ; --Argc >= 0; Argv++) {
  128.         if((font = GrLoadFont(*Argv)) == NULL)
  129.         continue;
  130.         sprintf(buff,"This is %s",*Argv);
  131.         displayfont(font,buff,strlen(buff));
  132.     }
  133. }
  134.  
  135.